#define _CRT_SECURE_NO_WARNINGS 1
#include <stdio.h>
#include <string.h>
#include<stdlib.h>
#include<assert.h>
//#include < stdio.h >
//struct S
//{
//	int a;
//	int b;
//};
//int main()
//{
//	struct S a, * p = &a;
//	a.a = 99;
//	printf("%d\n", (*p).a);
//	return 0;
//}
//int main()
//{
//	char arr1[256];
//	int ret = atoi(arr1);
//	printf("%d", ret);
//	return 0;
//}
int my_atoi(const char* str)
{
	assert(str != NULL);
	while ((*str)==' ')
	{
		str++;
	}
	int flag = 1;
	if (*str == '+')
	{
		flag = 1;
		str++;
	}
	else if (*str == '-')
	{
		flag = -1;
		str++;
	}
	long long ret = 0;
	while ((*str) != '\0')
	{
		if (isdigit(*str))
		{
		/*	if (ret > INT_MAX||ret<INT_MIN)
			{
				return 0;
			}*/
			ret = ret * 10 + ((*str) - '0') * flag;
			if (ret > INT_MAX || ret < INT_MIN)
			{
				return 0;
			}
		}
		else
		{
			return (int)ret;
		}
		str++;
	}
	return (int)ret;
}

int main()
{
	int i;
	//char buffer[256];
	//printf("Enter a number: ");
	//fgets(buffer, 256, stdin);
	//i = atoi("123");
	i = my_atoi("    -123a123w4");
	printf("%d\n", i);
	return 0;
}